
//01942410   8B15 F079A101    MOV EDX,DWORD PTR DS:[1A179F0]           ; hl.01EB74E8

//hud_playermove
01942410   8B15 F079A101    MOV EDX,DWORD PTR DS:[1A179F0]           ; hl.01EB74E8
01942416   8D4424 08        LEA EAX,DWORD PTR SS:[ESP+8]
0194241A   8D4C24 04        LEA ECX,DWORD PTR SS:[ESP+4]
0194241E   50               PUSH EAX
0194241F   51               PUSH ECX
01942420   FF52 18          CALL DWORD PTR DS:[EDX+18]
01942423   83C4 08          ADD ESP,8
01942426   E9 05D80100      JMP hl.0195FC30


//pm_move
0195FC30   8B5424 08        MOV EDX,DWORD PTR SS:[ESP+8]
0195FC34   8B4424 04        MOV EAX,DWORD PTR SS:[ESP+4]
0195FC38   33C9             XOR ECX,ECX
0195FC3A   A3 FCCBA201      MOV DWORD PTR DS:[1A2CBFC],EAX
0195FC3F   85D2             TEST EDX,EDX
0195FC41   0F95C1           SETNE CL
0195FC44   51               PUSH ECX
0195FC45   E8 F6F6FFFF      CALL hl.0195F340 ////-------------------------------->pm_playermove

//pm_playermove
0195F340   83EC 10          SUB ESP,10
0195F343   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F348   8B4C24 14        MOV ECX,DWORD PTR SS:[ESP+14]
0195F34C   53               PUSH EBX
0195F34D   56               PUSH ESI
0195F34E   57               PUSH EDI
0195F34F   33DB             XOR EBX,EBX
0195F351   33FF             XOR EDI,EDI
0195F353   8948 04          MOV DWORD PTR DS:[EAX+4],ECX
0195F356   E8 A5FBFFFF      CALL hl.0195EF00
0195F35B   8B15 FCCBA201    MOV EDX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20  /////----------> PM_CheckParamters
0195F361   33C9             XOR ECX,ECX
0195F363   899A 8C540400    MOV DWORD PTR DS:[EDX+4548C],EBX
0195F369   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F36E   8A88 5A540400    MOV CL,BYTE PTR DS:[EAX+4545A]
0195F374   894C24 20        MOV DWORD PTR SS:[ESP+20],ECX
0195F378   DB4424 20        FILD DWORD PTR SS:[ESP+20]
0195F37C   DC0D D0D29B01    FMUL QWORD PTR DS:[19BD2D0]
0195F382   D958 10          FSTP DWORD PTR DS:[EAX+10]
0195F385   E8 66FEFFFF      CALL hl.0195F1F0
0195F38A   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F38F   8D50 2C          LEA EDX,DWORD PTR DS:[EAX+2C]
0195F392   8D48 20          LEA ECX,DWORD PTR DS:[EAX+20]
0195F395   52               PUSH EDX
0195F396   8D50 14          LEA EDX,DWORD PTR DS:[EAX+14]
0195F399   51               PUSH ECX
0195F39A   83C0 44          ADD EAX,44
0195F39D   52               PUSH EDX
0195F39E   50               PUSH EAX
0195F39F   E8 7CA1FFFF      CALL hl.01959520
0195F3A4   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F3A9   83C4 10          ADD ESP,10
0195F3AC   3998 D8000000    CMP DWORD PTR DS:[EAX+D8],EBX
0195F3B2   75 08            JNZ SHORT hl.0195F3BC
0195F3B4   3998 FC010000    CMP DWORD PTR DS:[EAX+1FC],EBX
0195F3BA   7E 10            JLE SHORT hl.0195F3CC
0195F3BC   E8 AFDAFFFF      CALL hl.0195CE70
0195F3C1   5F               POP EDI
0195F3C2   5E               POP ESI
0195F3C3   5B               POP EBX
0195F3C4   83C4 10          ADD ESP,10
0195F3C7  ^E9 14D5FFFF      JMP hl.0195C8E0
0195F3CC   8B80 DC000000    MOV EAX,DWORD PTR DS:[EAX+DC]
0195F3D2   83F8 08          CMP EAX,8
0195F3D5   74 11            JE SHORT hl.0195F3E8
0195F3D7   3BC3             CMP EAX,EBX
0195F3D9   74 0D            JE SHORT hl.0195F3E8
0195F3DB   E8 20D7FFFF      CALL hl.0195CB00
0195F3E0   85C0             TEST EAX,EAX
0195F3E2   0F85 FD050000    JNZ hl.0195F9E5
0195F3E8   E8 F3D4FFFF      CALL hl.0195C8E0
0195F3ED   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F3F2   8B88 E4000000    MOV ECX,DWORD PTR DS:[EAX+E4]
0195F3F8   8988 EC000000    MOV DWORD PTR DS:[EAX+EC],ECX
0195F3FE   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F403   83B8 E0000000 FF CMP DWORD PTR DS:[EAX+E0],-1 //////////////if ( pmove->onground == -1 )
0195F40A   75 10            JNZ SHORT hl.0195F41C
0195F40C   D940 64          FLD DWORD PTR DS:[EAX+64]
0195F40F   D9E0             FCHS
0195F411   D998 9C000000    FSTP DWORD PTR DS:[EAX+9C]
0195F417   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F41C   891D 04CCA201    MOV DWORD PTR DS:[1A2CC04],EBX
0195F422   8B88 D0000000    MOV ECX,DWORD PTR DS:[EAX+D0]
0195F428   3BCB             CMP ECX,EBX
0195F42A   BE 00000001      MOV ESI,1000000
0195F42F   75 1D            JNZ SHORT hl.0195F44E
0195F431   85B0 B8000000    TEST DWORD PTR DS:[EAX+B8],ESI
0195F437   75 15            JNZ SHORT hl.0195F44E
0195F439   E8 F2E5FFFF      CALL hl.0195DA30
0195F43E   8BF8             MOV EDI,EAX
0195F440   3BFB             CMP EDI,EBX
0195F442   74 0A            JE SHORT hl.0195F44E
0195F444   C705 04CCA201 01>MOV DWORD PTR DS:[1A2CC04],1
0195F44E   E8 7DBAFFFF      CALL hl.0195AED0
0195F453   E8 78DEFFFF      CALL hl.0195D2D0
0195F458   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F45E   3999 D0000000    CMP DWORD PTR DS:[ECX+D0],EBX
0195F464   75 37            JNZ SHORT hl.0195F49D
0195F466   85B1 B8000000    TEST DWORD PTR DS:[ECX+B8],ESI
0195F46C   75 2F            JNZ SHORT hl.0195F49D
0195F46E   3BFB             CMP EDI,EBX
0195F470   74 0B            JE SHORT hl.0195F47D
0195F472   57               PUSH EDI
0195F473   E8 F8E1FFFF      CALL hl.0195D670
0195F478   83C4 04          ADD ESP,4
0195F47B   EB 1A            JMP SHORT hl.0195F497
0195F47D   8B81 DC000000    MOV EAX,DWORD PTR DS:[ECX+DC]
0195F483   83F8 03          CMP EAX,3
0195F486   74 15            JE SHORT hl.0195F49D
0195F488   83F8 08          CMP EAX,8
0195F48B   74 10            JE SHORT hl.0195F49D
0195F48D   C781 DC000000 03>MOV DWORD PTR DS:[ECX+DC],3
0195F497   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F49D   8B81 DC000000    MOV EAX,DWORD PTR DS:[ECX+DC]
0195F4A3   83F8 0A          CMP EAX,0A
0195F4A6   0F87 26050000    JA hl.0195F9D2
0195F4AC   33D2             XOR EDX,EDX
0195F4AE   8A90 04FA9501    MOV DL,BYTE PTR DS:[EAX+195FA04]
0195F4B4   FF2495 ECF99501  JMP DWORD PTR DS:[EDX*4+195F9EC]
0195F4BB   8B81 68540400    MOV EAX,DWORD PTR DS:[ECX+45468]
0195F4C1   8B91 6C540400    MOV EDX,DWORD PTR DS:[ECX+4546C]
0195F4C7   83C1 14          ADD ECX,14
0195F4CA   894424 0C        MOV DWORD PTR SS:[ESP+C],EAX
0195F4CE   51               PUSH ECX
0195F4CF   895424 24        MOV DWORD PTR SS:[ESP+24],EDX
0195F4D3   E8 18A8FFFF      CALL hl.01959CF0
0195F4D8   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F4DD   83C0 20          ADD EAX,20
0195F4E0   DDD8             FSTP ST
0195F4E2   50               PUSH EAX
0195F4E3   E8 08A8FFFF      CALL hl.01959CF0
0195F4E8   8B15 FCCBA201    MOV EDX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F4EE   83C4 08          ADD ESP,8
0195F4F1   DDD8             FSTP ST
0195F4F3   33C0             XOR EAX,EAX
0195F4F5   8D4A 14          LEA ECX,DWORD PTR DS:[EDX+14]
0195F4F8   D94424 20        FLD DWORD PTR SS:[ESP+20]
0195F4FC   D849 0C          FMUL DWORD PTR DS:[ECX+C]
0195F4FF   D94424 0C        FLD DWORD PTR SS:[ESP+C]
0195F503   D809             FMUL DWORD PTR DS:[ECX]
0195F505   40               INC EAX
0195F506   83C1 04          ADD ECX,4
0195F509   83F8 03          CMP EAX,3
0195F50C   DEC1             FADDP ST(1),ST
0195F50E   D95C84 0C        FSTP DWORD PTR SS:[ESP+EAX*4+C]
0195F512  ^7C E4            JL SHORT hl.0195F4F8
0195F514   D94424 18        FLD DWORD PTR SS:[ESP+18]
0195F518   D882 70540400    FADD DWORD PTR DS:[EDX+45470]
0195F51E   8D42 38          LEA EAX,DWORD PTR DS:[EDX+38]
0195F521   8D4C24 10        LEA ECX,DWORD PTR SS:[ESP+10]
0195F525   50               PUSH EAX
0195F526   51               PUSH ECX
0195F527   D95C24 20        FSTP DWORD PTR SS:[ESP+20]
0195F52B   8B52 10          MOV EDX,DWORD PTR DS:[EDX+10]
0195F52E   52               PUSH EDX
0195F52F   50               PUSH EAX
0195F530   E8 2BA6FFFF      CALL hl.01959B60  ////---------------------->
0195F535   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F53A   83C4 10          ADD ESP,10
0195F53D   8958 5C          MOV DWORD PTR DS:[EAX+5C],EBX
0195F540   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F546   5F               POP EDI
0195F547   5E               POP ESI
0195F548   8959 60          MOV DWORD PTR DS:[ECX+60],EBX
0195F54B   8B15 FCCBA201    MOV EDX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F551   895A 64          MOV DWORD PTR DS:[EDX+64],EBX
0195F554   5B               POP EBX
0195F555   83C4 10          ADD ESP,10
0195F558   C3               RETN

0195F559   5F               POP EDI
0195F55A   5E               POP ESI
0195F55B   5B               POP EBX
0195F55C   83C4 10          ADD ESP,10
0195F55F  ^E9 1CE8FFFF      JMP hl.0195DD80
0195F564   E8 B7D1FFFF      CALL hl.0195C720
0195F569   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F56E   F680 76540400 02 TEST BYTE PTR DS:[EAX+45476],2
0195F575   74 0B            JE SHORT hl.0195F582
0195F577   3BFB             CMP EDI,EBX
0195F579   75 13            JNZ SHORT hl.0195F58E
0195F57B   E8 E0EEFFFF      CALL hl.0195E460
0195F580   EB 07            JMP SHORT hl.0195F589
0195F582   83A0 C8000000 FD AND DWORD PTR DS:[EAX+C8],FFFFFFFD
0195F589   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F58E   D940 74          FLD DWORD PTR DS:[EAX+74]
0195F591   D840 5C          FADD DWORD PTR DS:[EAX+5C]
0195F594   D958 5C          FSTP DWORD PTR DS:[EAX+5C]
0195F597   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F59C   D940 78          FLD DWORD PTR DS:[EAX+78]
0195F59F   D840 60          FADD DWORD PTR DS:[EAX+60]
0195F5A2   D958 60          FSTP DWORD PTR DS:[EAX+60]
0195F5A5   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F5AA   D940 7C          FLD DWORD PTR DS:[EAX+7C]
0195F5AD   D840 64          FADD DWORD PTR DS:[EAX+64]
0195F5B0   D958 64          FSTP DWORD PTR DS:[EAX+64]
0195F5B3   E8 18BFFFFF      CALL hl.0195B4D0
0195F5B8   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F5BD   5F               POP EDI
0195F5BE   5E               POP ESI
0195F5BF   5B               POP EBX
0195F5C0   D940 5C          FLD DWORD PTR DS:[EAX+5C]
0195F5C3   D860 74          FSUB DWORD PTR DS:[EAX+74]
0195F5C6   D958 5C          FSTP DWORD PTR DS:[EAX+5C]
0195F5C9   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F5CE   D940 60          FLD DWORD PTR DS:[EAX+60]
0195F5D1   D860 78          FSUB DWORD PTR DS:[EAX+78]
0195F5D4   D958 60          FSTP DWORD PTR DS:[EAX+60]
0195F5D7   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F5DC   D940 64          FLD DWORD PTR DS:[EAX+64]
0195F5DF   D860 7C          FSUB DWORD PTR DS:[EAX+7C]
0195F5E2   D958 64          FSTP DWORD PTR DS:[EAX+64]
0195F5E5   83C4 10          ADD ESP,10
0195F5E8   C3               RETN

0195F5E9   83B9 E4000000 01 CMP DWORD PTR DS:[ECX+E4],1
0195F5F0   7F 74            JG SHORT hl.0195F666
0195F5F2   D981 CC000000    FLD DWORD PTR DS:[ECX+CC]
0195F5F8   D81D F4D19B01    FCOMP DWORD PTR DS:[19BD1F4]
0195F5FE   DFE0             FSTSW AX
0195F600   F6C4 44          TEST AH,44
0195F603   7A 61            JPE SHORT hl.0195F666
0195F605   D981 C0000000    FLD DWORD PTR DS:[ECX+C0]
0195F60B   D81D F4D19B01    FCOMP DWORD PTR DS:[19BD1F4]
0195F611   DFE0             FSTSW AX
0195F613   F6C4 44          TEST AH,44
0195F616   7B 08            JPO SHORT hl.0195F620
0195F618   D981 C0000000    FLD DWORD PTR DS:[ECX+C0]
0195F61E   EB 06            JMP SHORT hl.0195F626
0195F620   D905 F0D19B01    FLD DWORD PTR DS:[19BD1F0]
0195F626   D941 64          FLD DWORD PTR DS:[ECX+64]
0195F629   D9C9             FXCH ST(1)
0195F62B   8B81 F0F40400    MOV EAX,DWORD PTR DS:[ECX+4F4F0]
0195F631   D808             FMUL DWORD PTR DS:[EAX]
0195F633   D849 10          FMUL DWORD PTR DS:[ECX+10]
0195F636   DC0D 00D29B01    FMUL QWORD PTR DS:[19BD200]
0195F63C   DEE9             FSUBP ST(1),ST
0195F63E   D959 64          FSTP DWORD PTR DS:[ECX+64]
0195F641   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F646   D940 7C          FLD DWORD PTR DS:[EAX+7C]
0195F649   D848 10          FMUL DWORD PTR DS:[EAX+10]
0195F64C   D840 64          FADD DWORD PTR DS:[EAX+64]
0195F64F   D958 64          FSTP DWORD PTR DS:[EAX+64]
0195F652   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F658   8959 7C          MOV DWORD PTR DS:[ECX+7C],EBX
0195F65B   E8 F0BBFFFF      CALL hl.0195B250
0195F660   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F666   D981 CC000000    FLD DWORD PTR DS:[ECX+CC]
0195F66C   D81D F4D19B01    FCOMP DWORD PTR DS:[19BD1F4]
0195F672   DFE0             FSTSW AX
0195F674   F6C4 44          TEST AH,44
0195F677   0F8B B6000000    JPO hl.0195F733
0195F67D   D981 CC000000    FLD DWORD PTR DS:[ECX+CC]
0195F683   D81D E07C9C01    FCOMP DWORD PTR DS:[19C7CE0]
0195F689   DFE0             FSTSW AX
0195F68B   25 00410000      AND EAX,4100
0195F690   75 10            JNZ SHORT hl.0195F6A2
0195F692   C781 CC000000 00>MOV DWORD PTR DS:[ECX+CC],461C4000
0195F69C   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F6A2   D981 CC000000    FLD DWORD PTR DS:[ECX+CC]
0195F6A8   D81D F4D19B01    FCOMP DWORD PTR DS:[19BD1F4]
0195F6AE   DFE0             FSTSW AX
0195F6B0   F6C4 44          TEST AH,44
0195F6B3   7B 6E            JPO SHORT hl.0195F723
0195F6B5   33D2             XOR EDX,EDX
0195F6B7   8A91 5A540400    MOV DL,BYTE PTR DS:[ECX+4545A]
0195F6BD   895424 20        MOV DWORD PTR SS:[ESP+20],EDX
0195F6C1   DB4424 20        FILD DWORD PTR SS:[ESP+20]
0195F6C5   D8A9 CC000000    FSUBR DWORD PTR DS:[ECX+CC]
0195F6CB   D999 CC000000    FSTP DWORD PTR DS:[ECX+CC]
0195F6D1   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F6D7   D981 CC000000    FLD DWORD PTR DS:[ECX+CC]
0195F6DD   D81D F4D19B01    FCOMP DWORD PTR DS:[19BD1F4]
0195F6E3   DFE0             FSTSW AX
0195F6E5   F6C4 05          TEST AH,5
0195F6E8   7B 08            JPO SHORT hl.0195F6F2
0195F6EA   3999 E4000000    CMP DWORD PTR DS:[ECX+E4],EBX
0195F6F0   75 20            JNZ SHORT hl.0195F712
0195F6F2   8999 CC000000    MOV DWORD PTR DS:[ECX+CC],EBX
0195F6F8   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F6FD   8B88 B8000000    MOV ECX,DWORD PTR DS:[EAX+B8]
0195F703   80E5 F7          AND CH,0F7
0195F706   8988 B8000000    MOV DWORD PTR DS:[EAX+B8],ECX
0195F70C   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F712   8B41 68          MOV EAX,DWORD PTR DS:[ECX+68]
0195F715   8941 5C          MOV DWORD PTR DS:[ECX+5C],EAX
0195F718   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F71D   8B48 6C          MOV ECX,DWORD PTR DS:[EAX+6C]
0195F720   8948 60          MOV DWORD PTR DS:[EAX+60],ECX
0195F723   E8 A8BDFFFF      CALL hl.0195B4D0
0195F728   5F               POP EDI
0195F729   5E               POP ESI
0195F72A   5B               POP EBX
0195F72B   83C4 10          ADD ESP,10
0195F72E  ^E9 EDCFFFFF      JMP hl.0195C720
0195F733   8B81 E4000000    MOV EAX,DWORD PTR DS:[ECX+E4]
0195F739   BB 02000000      MOV EBX,2
0195F73E   3BC3             CMP EAX,EBX
0195F740   0F8C 96000000    JL hl.0195F7DC
0195F746   75 0B            JNZ SHORT hl.0195F753
0195F748   E8 B3F1FFFF      CALL hl.0195E900
0195F74D   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F753   D941 64          FLD DWORD PTR DS:[ECX+64]
0195F756   D81D F4D19B01    FCOMP DWORD PTR DS:[19BD1F4]
0195F75C   DFE0             FSTSW AX
0195F75E   F6C4 05          TEST AH,5
0195F761   7A 23            JPE SHORT hl.0195F786
0195F763   D981 CC000000    FLD DWORD PTR DS:[ECX+CC]
0195F769   D81D F4D19B01    FCOMP DWORD PTR DS:[19BD1F4]
0195F76F   DFE0             FSTSW AX
0195F771   F6C4 44          TEST AH,44
0195F774   7B 10            JPO SHORT hl.0195F786
0195F776   C781 CC000000 00>MOV DWORD PTR DS:[ECX+CC],0
0195F780   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F786   8499 76540400    TEST BYTE PTR DS:[ECX+45476],BL
0195F78C   74 07            JE SHORT hl.0195F795
0195F78E   E8 CDECFFFF      CALL hl.0195E460
0195F793   EB 0E            JMP SHORT hl.0195F7A3
0195F795   8B81 C8000000    MOV EAX,DWORD PTR DS:[ECX+C8]
0195F79B   24 FD            AND AL,0FD
0195F79D   8981 C8000000    MOV DWORD PTR DS:[ECX+C8],EAX
0195F7A3   E8 08CBFFFF      CALL hl.0195C2B0
0195F7A8   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F7AD   D940 5C          FLD DWORD PTR DS:[EAX+5C]
0195F7B0   D860 74          FSUB DWORD PTR DS:[EAX+74]
0195F7B3   D958 5C          FSTP DWORD PTR DS:[EAX+5C]
0195F7B6   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F7BB   D940 60          FLD DWORD PTR DS:[EAX+60]
0195F7BE   D860 78          FSUB DWORD PTR DS:[EAX+78]
0195F7C1   D958 60          FSTP DWORD PTR DS:[EAX+60]
0195F7C4   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F7C9   D940 64          FLD DWORD PTR DS:[EAX+64]
0195F7CC   D860 7C          FSUB DWORD PTR DS:[EAX+7C]
0195F7CF   D958 64          FSTP DWORD PTR DS:[EAX+64]
0195F7D2   E8 09D1FFFF      CALL hl.0195C8E0
0195F7D7   E9 12010000      JMP hl.0195F8EE
0195F7DC   8499 76540400    TEST BYTE PTR DS:[ECX+45476],BL
0195F7E2   74 0B            JE SHORT hl.0195F7EF
0195F7E4   85FF             TEST EDI,EDI
0195F7E6   75 1B            JNZ SHORT hl.0195F803
0195F7E8   E8 73ECFFFF      CALL hl.0195E460
0195F7ED   EB 0E            JMP SHORT hl.0195F7FD
0195F7EF   8B81 C8000000    MOV EAX,DWORD PTR DS:[ECX+C8]
0195F7F5   24 FD            AND AL,0FD
0195F7F7   8981 C8000000    MOV DWORD PTR DS:[ECX+C8],EAX
0195F7FD   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F803   8B81 E0000000    MOV EAX,DWORD PTR DS:[ECX+E0]
0195F809   83CE FF          OR ESI,FFFFFFFF
0195F80C   3BC6             CMP EAX,ESI
0195F80E   74 0C            JE SHORT hl.0195F81C
0195F810   C741 64 00000000 MOV DWORD PTR DS:[ECX+64],0
0195F817   E8 34C8FFFF      CALL hl.0195C050
0195F81C   E8 2FBAFFFF      CALL hl.0195B250
0195F821   8B15 FCCBA201    MOV EDX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F827   39B2 E0000000    CMP DWORD PTR DS:[EDX+E0],ESI
0195F82D   74 07            JE SHORT hl.0195F836
0195F82F   E8 4CC2FFFF      CALL hl.0195BA80
0195F834   EB 05            JMP SHORT hl.0195F83B
0195F836   E8 85CDFFFF      CALL hl.0195C5C0
0195F83B   E8 A0D0FFFF      CALL hl.0195C8E0
0195F840   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F845   D940 5C          FLD DWORD PTR DS:[EAX+5C]
0195F848   D860 74          FSUB DWORD PTR DS:[EAX+74]
0195F84B   D958 5C          FSTP DWORD PTR DS:[EAX+5C]
0195F84E   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F853   D940 60          FLD DWORD PTR DS:[EAX+60]
0195F856   D860 78          FSUB DWORD PTR DS:[EAX+78]
0195F859   D958 60          FSTP DWORD PTR DS:[EAX+60]
0195F85C   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F861   D940 64          FLD DWORD PTR DS:[EAX+64]
0195F864   D860 7C          FSUB DWORD PTR DS:[EAX+7C]
0195F867   D958 64          FSTP DWORD PTR DS:[EAX+64]
0195F86A   E8 E1B9FFFF      CALL hl.0195B250
0195F86F   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F875   83B9 E4000000 01 CMP DWORD PTR DS:[ECX+E4],1
0195F87C   7F 5C            JG SHORT hl.0195F8DA
0195F87E   D981 CC000000    FLD DWORD PTR DS:[ECX+CC]
0195F884   D81D F4D19B01    FCOMP DWORD PTR DS:[19BD1F4]
0195F88A   DFE0             FSTSW AX
0195F88C   F6C4 44          TEST AH,44
0195F88F   7A 49            JPE SHORT hl.0195F8DA
0195F891   D981 C0000000    FLD DWORD PTR DS:[ECX+C0]
0195F897   D81D F4D19B01    FCOMP DWORD PTR DS:[19BD1F4]
0195F89D   DFE0             FSTSW AX
0195F89F   F6C4 44          TEST AH,44
0195F8A2   7B 08            JPO SHORT hl.0195F8AC
0195F8A4   D981 C0000000    FLD DWORD PTR DS:[ECX+C0]
0195F8AA   EB 06            JMP SHORT hl.0195F8B2
0195F8AC   D905 F0D19B01    FLD DWORD PTR DS:[19BD1F0]
0195F8B2   8B81 F0F40400    MOV EAX,DWORD PTR DS:[ECX+4F4F0]
0195F8B8   D941 64          FLD DWORD PTR DS:[ECX+64]
0195F8BB   D900             FLD DWORD PTR DS:[EAX]
0195F8BD   D849 10          FMUL DWORD PTR DS:[ECX+10]
0195F8C0   D8CA             FMUL ST,ST(2)
0195F8C2   DC0D 00D29B01    FMUL QWORD PTR DS:[19BD200]
0195F8C8   DEE9             FSUBP ST(1),ST
0195F8CA   D959 64          FSTP DWORD PTR DS:[ECX+64]
0195F8CD   DDD8             FSTP ST
0195F8CF   E8 7CB9FFFF      CALL hl.0195B250
0195F8D4   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F8DA   39B1 E0000000    CMP DWORD PTR DS:[ECX+E0],ESI
0195F8E0   74 07            JE SHORT hl.0195F8E9
0195F8E2   C741 64 00000000 MOV DWORD PTR DS:[ECX+64],0
0195F8E9   E8 82F2FFFF      CALL hl.0195EB70
0195F8EE   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F8F3   8B88 EC000000    MOV ECX,DWORD PTR DS:[EAX+EC]
0195F8F9   85C9             TEST ECX,ECX
0195F8FB   75 12            JNZ SHORT hl.0195F90F
0195F8FD   8B90 E4000000    MOV EDX,DWORD PTR DS:[EAX+E4]
0195F903   85D2             TEST EDX,EDX
0195F905   75 16            JNZ SHORT hl.0195F91D
0195F907   85C9             TEST ECX,ECX
0195F909   0F84 D6000000    JE hl.0195F9E5
0195F90F   8B88 E4000000    MOV ECX,DWORD PTR DS:[EAX+E4]
0195F915   85C9             TEST ECX,ECX
0195F917   0F85 C8000000    JNZ hl.0195F9E5
0195F91D   6A 03            PUSH 3
0195F91F   6A 00            PUSH 0
0195F921   FF90 88F50400    CALL DWORD PTR DS:[EAX+4F588]
0195F927   83C4 08          ADD ESP,8
0195F92A   83F8 03          CMP EAX,3
0195F92D   0F87 B2000000    JA hl.0195F9E5
0195F933   FF2485 10FA9501  JMP DWORD PTR DS:[EAX*4+195FA10]
0195F93A   6A 64            PUSH 64
0195F93C   6A 00            PUSH 0
0195F93E   68 CDCC4C3F      PUSH 3F4CCCCD
0195F943   68 0000803F      PUSH 3F800000
0195F948   68 F81F9E01      PUSH hl.019E1FF8                         ; ASCII "player/pl_wade1.wav"
0195F94D   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F953   6A 04            PUSH 4
0195F955   FF91 B4F50400    CALL DWORD PTR DS:[ECX+4F5B4]
0195F95B   83C4 18          ADD ESP,18
0195F95E   5F               POP EDI
0195F95F   5E               POP ESI
0195F960   5B               POP EBX
0195F961   83C4 10          ADD ESP,10
0195F964   C3               RETN

0195F965   8B15 FCCBA201    MOV EDX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F96B   6A 64            PUSH 64
0195F96D   6A 00            PUSH 0
0195F96F   68 CDCC4C3F      PUSH 3F4CCCCD
0195F974   68 0000803F      PUSH 3F800000
0195F979   68 E41F9E01      PUSH hl.019E1FE4                         ; ASCII "player/pl_wade2.wav"
0195F97E   6A 04            PUSH 4
0195F980   FF92 B4F50400    CALL DWORD PTR DS:[EDX+4F5B4]
0195F986   83C4 18          ADD ESP,18
0195F989   5F               POP EDI
0195F98A   5E               POP ESI
0195F98B   5B               POP EBX
0195F98C   83C4 10          ADD ESP,10
0195F98F   C3               RETN
0195F990   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F995   6A 64            PUSH 64
0195F997   6A 00            PUSH 0
0195F999   68 CDCC4C3F      PUSH 3F4CCCCD
0195F99E   68 0000803F      PUSH 3F800000
0195F9A3   68 D01F9E01      PUSH hl.019E1FD0                         ; ASCII "player/pl_wade3.wav"
0195F9A8   6A 04            PUSH 4
0195F9AA   FF90 B4F50400    CALL DWORD PTR DS:[EAX+4F5B4]
0195F9B0   83C4 18          ADD ESP,18
0195F9B3   5F               POP EDI
0195F9B4   5E               POP ESI
0195F9B5   5B               POP EBX
0195F9B6   83C4 10          ADD ESP,10
0195F9B9   C3               RETN

0195F9BA   6A 64            PUSH 64
0195F9BC   6A 00            PUSH 0
0195F9BE   68 CDCC4C3F      PUSH 3F4CCCCD
0195F9C3   68 0000803F      PUSH 3F800000
0195F9C8   68 BC1F9E01      PUSH hl.019E1FBC                         ; ASCII "player/pl_wade4.wav"
0195F9CD  ^E9 7BFFFFFF      JMP hl.0195F94D
0195F9D2   8B51 04          MOV EDX,DWORD PTR DS:[ECX+4]
0195F9D5   52               PUSH EDX
0195F9D6   50               PUSH EAX

//pmove->Con_DPrintf("Bogus pmove player movetype %i on (%i) 0=cl 1=sv\n", pmove->movetype, pmove->server);

0195F9D7   68 78219E01      PUSH hl.019E2178                      ; ASCII "Bogus pmove player movetype %i on (%i) 0=cl 1=sv"
0195F9DC   FF91 64F50400    CALL DWORD PTR DS:[ECX+4F564]
0195F9E2   83C4 0C          ADD ESP,0C
0195F9E5   5F               POP EDI
0195F9E6   5E               POP ESI
0195F9E7   5B               POP EBX
0195F9E8   83C4 10          ADD ESP,10
0195F9EB   C3               RETN

0195F9EC   E5 F9            IN EAX,0F9                               ; I/O command
0195F9EE   95               XCHG EAX,EBP
0195F9EF   01E9             ADD ECX,EBP
0195F9F1   F5               CMC
0195F9F2   95               XCHG EAX,EBP
0195F9F3   0164F5 95        ADD DWORD PTR SS:[EBP+ESI*8-6B],ESP
0195F9F7   0159 F5          ADD DWORD PTR DS:[ECX-B],EBX
0195F9FA   95               XCHG EAX,EBP
0195F9FB   01BB F49501D2    ADD DWORD PTR DS:[EBX+D20195F4],EDI
0195FA01   F9               STC
0195FA02   95               XCHG EAX,EBP
0195FA03   0100             ADD DWORD PTR DS:[EAX],EAX
0195FA05   05 05010502      ADD EAX,hl.02050105
0195FA0A   0305 04050390    ADD EAX,DWORD PTR DS:[90030504]
0195FA10   3AF9             CMP BH,CL
0195FA12   95               XCHG EAX,EBP
0195FA13   0165 F9          ADD DWORD PTR SS:[EBP-7],ESP
0195FA16   95               XCHG EAX,EBP
0195FA17   0190 F99501BA    ADD DWORD PTR DS:[EAX+BA0195F9],EDX
0195FA1D   F9               STC
0195FA1E   95               XCHG EAX,EBP
0195FA1F   0183 EC0CB9A2    ADD DWORD PTR DS:[EBX+A2B90CEC],EAX
0195FA25   0000             ADD BYTE PTR DS:[EAX],AL
0195FA27   00D9             ADD CL,BL
0195FA29   05 107D9C01      ADD EAX,hl.019C7D10
0195FA2E   56               PUSH ESI
0195FA2F   57               PUSH EDI
0195FA30   33C0             XOR EAX,EAX
0195FA32   BF 707FA201      MOV EDI,hl.01A27F70
0195FA37   F3:AB            REP STOS DWORD PTR ES:[EDI]
0195FA39   33F6             XOR ESI,ESI
0195FA3B   33C9             XOR ECX,ECX
0195FA3D   BA 747FA201      MOV EDX,hl.01A27F74
0195FA42   D952 04          FST DWORD PTR DS:[EDX+4]
0195FA45   DC05 58029C01    FADD QWORD PTR DS:[19C0258]
0195FA4B   8972 FC          MOV DWORD PTR DS:[EDX-4],ESI
0195FA4E   8932             MOV DWORD PTR DS:[EDX],ESI
0195FA50   41               INC ECX
0195FA51   83C2 0C          ADD EDX,0C
0195FA54   DC15 58029C01    FCOM QWORD PTR DS:[19C0258]
0195FA5A   DFE0             FSTSW AX
0195FA5C   F6C4 41          TEST AH,41
0195FA5F   7B E1            JPO SHORT hl.0195FA42
0195FA61   8D0449           LEA EAX,DWORD PTR DS:[ECX+ECX*2]
0195FA64   DDD8             FSTP ST
0195FA66   D905 107D9C01    FLD DWORD PTR DS:[19C7D10]
0195FA6C   8D1485 747FA201  LEA EDX,DWORD PTR DS:[EAX*4+1A27F74]
0195FA73   D912             FST DWORD PTR DS:[EDX]
0195FA75   DC05 58029C01    FADD QWORD PTR DS:[19C0258]
0195FA7B   8972 FC          MOV DWORD PTR DS:[EDX-4],ESI
0195FA7E   8972 04          MOV DWORD PTR DS:[EDX+4],ESI
0195FA81   41               INC ECX
0195FA82   83C2 0C          ADD EDX,0C
0195FA85   DC15 58029C01    FCOM QWORD PTR DS:[19C0258]
0195FA8B   DFE0             FSTSW AX
0195FA8D   F6C4 41          TEST AH,41
0195FA90   7B E1            JPO SHORT hl.0195FA73
0195FA92   8D1449           LEA EDX,DWORD PTR DS:[ECX+ECX*2]
0195FA95   DDD8             FSTP ST
0195FA97   D905 107D9C01    FLD DWORD PTR DS:[19C7D10]
0195FA9D   8D1495 747FA201  LEA EDX,DWORD PTR DS:[EDX*4+1A27F74]
0195FAA4   D952 FC          FST DWORD PTR DS:[EDX-4]
0195FAA7   DC05 58029C01    FADD QWORD PTR DS:[19C0258]
0195FAAD   8932             MOV DWORD PTR DS:[EDX],ESI
0195FAAF   8972 04          MOV DWORD PTR DS:[EDX+4],ESI
0195FAB2   41               INC ECX
0195FAB3   83C2 0C          ADD EDX,0C
0195FAB6   DC15 58029C01    FCOM QWORD PTR DS:[19C0258]
0195FABC   DFE0             FSTSW AX
0195FABE   F6C4 41          TEST AH,41
0195FAC1   7B E1            JPO SHORT hl.0195FAA4
0195FAC3   DDD8             FSTP ST
0195FAC5   D905 107D9C01    FLD DWORD PTR DS:[19C7D10]
0195FACB   D905 107D9C01    FLD DWORD PTR DS:[19C7D10]
0195FAD1   D905 107D9C01    FLD DWORD PTR DS:[19C7D10]
0195FAD7   8D0449           LEA EAX,DWORD PTR DS:[ECX+ECX*2]
0195FADA   8D1485 747FA201  LEA EDX,DWORD PTR DS:[EAX*4+1A27F74]
0195FAE1   D9C2             FLD ST(2)
0195FAE3   41               INC ECX
0195FAE4   D95A FC          FSTP DWORD PTR DS:[EDX-4]
0195FAE7   D9C1             FLD ST(1)
0195FAE9   D91A             FSTP DWORD PTR DS:[EDX]
0195FAEB   D952 04          FST DWORD PTR DS:[EDX+4]
0195FAEE   DC05 30D29B01    FADD QWORD PTR DS:[19BD230]
0195FAF4   83C2 0C          ADD EDX,0C
0195FAF7   DC15 58029C01    FCOM QWORD PTR DS:[19C0258]
0195FAFD   DFE0             FSTSW AX
0195FAFF   F6C4 41          TEST AH,41
0195FB02   7B DD            JPO SHORT hl.0195FAE1
0195FB04   DDD8             FSTP ST
0195FB06   DC05 30D29B01    FADD QWORD PTR DS:[19BD230]
0195FB0C   DC15 58029C01    FCOM QWORD PTR DS:[19C0258]
0195FB12   DFE0             FSTSW AX
0195FB14   F6C4 41          TEST AH,41
0195FB17   7B B8            JPO SHORT hl.0195FAD1
0195FB19   DDD8             FSTP ST
0195FB1B   DC05 30D29B01    FADD QWORD PTR DS:[19BD230]
0195FB21   DC15 58029C01    FCOM QWORD PTR DS:[19C0258]
0195FB27   DFE0             FSTSW AX
0195FB29   F6C4 41          TEST AH,41
0195FB2C   7B 9D            JPO SHORT hl.0195FACB
0195FB2E   8D0449           LEA EAX,DWORD PTR DS:[ECX+ECX*2]
0195FB31   33D2             XOR EDX,EDX
0195FB33   DDD8             FSTP ST
0195FB35   C74424 08 000000>MOV DWORD PTR SS:[ESP+8],0
0195FB3D   C74424 0C 000080>MOV DWORD PTR SS:[ESP+C],3F800000
0195FB45   C74424 10 0000C0>MOV DWORD PTR SS:[ESP+10],40C00000
0195FB4D   8D0485 747FA201  LEA EAX,DWORD PTR DS:[EAX*4+1A27F74]
0195FB54   83C1 03          ADD ECX,3
0195FB57   D94494 08        FLD DWORD PTR SS:[ESP+EDX*4+8]
0195FB5B   D958 04          FSTP DWORD PTR DS:[EAX+4]
0195FB5E   8970 FC          MOV DWORD PTR DS:[EAX-4],ESI
0195FB61   8930             MOV DWORD PTR DS:[EAX],ESI
0195FB63   83C0 0C          ADD EAX,0C
0195FB66   42               INC EDX
0195FB67   83FA 03          CMP EDX,3
0195FB6A  ^7C EB            JL SHORT hl.0195FB57
0195FB6C   D905 08789C01    FLD DWORD PTR DS:[19C7808]
0195FB72   8D1449           LEA EDX,DWORD PTR DS:[ECX+ECX*2]
0195FB75   8D1495 747FA201  LEA EDX,DWORD PTR DS:[EDX*4+1A27F74]
0195FB7C   D912             FST DWORD PTR DS:[EDX]
0195FB7E   DC05 F0019C01    FADD QWORD PTR DS:[19C01F0]
0195FB84   8972 FC          MOV DWORD PTR DS:[EDX-4],ESI
0195FB87   8972 04          MOV DWORD PTR DS:[EDX+4],ESI
0195FB8A   41               INC ECX
0195FB8B   83C2 0C          ADD EDX,0C
0195FB8E   D815 E8019C01    FCOM DWORD PTR DS:[19C01E8]
0195FB94   DFE0             FSTSW AX
0195FB96   F6C4 41          TEST AH,41
0195FB99   7B E1            JPO SHORT hl.0195FB7C
0195FB9B   8D0449           LEA EAX,DWORD PTR DS:[ECX+ECX*2]
0195FB9E   DDD8             FSTP ST
0195FBA0   D905 08789C01    FLD DWORD PTR DS:[19C7808]
0195FBA6   8D1485 747FA201  LEA EDX,DWORD PTR DS:[EAX*4+1A27F74]
0195FBAD   D952 FC          FST DWORD PTR DS:[EDX-4]
0195FBB0   D805 E8019C01    FADD DWORD PTR DS:[19C01E8]
0195FBB6   8932             MOV DWORD PTR DS:[EDX],ESI
0195FBB8   8972 04          MOV DWORD PTR DS:[EDX+4],ESI
0195FBBB   41               INC ECX
0195FBBC   83C2 0C          ADD EDX,0C
0195FBBF   D815 E8019C01    FCOM DWORD PTR DS:[19C01E8]
0195FBC5   DFE0             FSTSW AX
0195FBC7   F6C4 41          TEST AH,41
0195FBCA   7B E1            JPO SHORT hl.0195FBAD
0195FBCC   DDD8             FSTP ST
0195FBCE   D944B4 08        FLD DWORD PTR SS:[ESP+ESI*4+8]
0195FBD2   D905 08789C01    FLD DWORD PTR DS:[19C7808]
0195FBD8   D905 08789C01    FLD DWORD PTR DS:[19C7808]
0195FBDE   8D1449           LEA EDX,DWORD PTR DS:[ECX+ECX*2]
0195FBE1   8D1495 747FA201  LEA EDX,DWORD PTR DS:[EDX*4+1A27F74]
0195FBE8   D9C1             FLD ST(1)
0195FBEA   41               INC ECX
0195FBEB   D95A FC          FSTP DWORD PTR DS:[EDX-4]
0195FBEE   D912             FST DWORD PTR DS:[EDX]
0195FBF0   D9C2             FLD ST(2)
0195FBF2   D95A 04          FSTP DWORD PTR DS:[EDX+4]
0195FBF5   83C2 0C          ADD EDX,0C
0195FBF8   DC05 F0019C01    FADD QWORD PTR DS:[19C01F0]
0195FBFE   D815 E8019C01    FCOM DWORD PTR DS:[19C01E8]
0195FC04   DFE0             FSTSW AX
0195FC06   F6C4 41          TEST AH,41
0195FC09   7B DD            JPO SHORT hl.0195FBE8
0195FC0B   DDD8             FSTP ST
0195FC0D   D805 E8019C01    FADD DWORD PTR DS:[19C01E8]
0195FC13   D815 E8019C01    FCOM DWORD PTR DS:[19C01E8]
0195FC19   DFE0             FSTSW AX
0195FC1B   F6C4 41          TEST AH,41
0195FC1E   7B B8            JPO SHORT hl.0195FBD8
0195FC20   46               INC ESI
0195FC21   DDD8             FSTP ST
0195FC23   83FE 03          CMP ESI,3
0195FC26   DDD8             FSTP ST
0195FC28  ^7C A4            JL SHORT hl.0195FBCE
0195FC2A   5F               POP EDI
0195FC2B   5E               POP ESI
0195FC2C   83C4 0C          ADD ESP,0C
0195FC2F   C3               RETN

0195FC30   8B5424 08        MOV EDX,DWORD PTR SS:[ESP+8]
0195FC34   8B4424 04        MOV EAX,DWORD PTR SS:[ESP+4]
0195FC38   33C9             XOR ECX,ECX
0195FC3A   A3 FCCBA201      MOV DWORD PTR DS:[1A2CBFC],EAX
0195FC3F   85D2             TEST EDX,EDX
0195FC41   0F95C1           SETNE CL
0195FC44   51               PUSH ECX
0195FC45   E8 F6F6FFFF      CALL hl.0195F340
0195FC4A   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195FC4F   83C4 04          ADD ESP,4
0195FC52   8B88 E0000000    MOV ECX,DWORD PTR DS:[EAX+E0]
0195FC58   83F9 FF          CMP ECX,-1
0195FC5B   8B88 B8000000    MOV ECX,DWORD PTR DS:[EAX+B8]
0195FC61   74 05            JE SHORT hl.0195FC68
0195FC63   80CD 02          OR CH,2
0195FC66   EB 03            JMP SHORT hl.0195FC6B
0195FC68   80E5 FD          AND CH,0FD
0195FC6B   8988 B8000000    MOV DWORD PTR DS:[EAX+B8],ECX
0195FC71   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195FC76   8B48 08          MOV ECX,DWORD PTR DS:[EAX+8]
0195FC79   85C9             TEST ECX,ECX
0195FC7B   75 13            JNZ SHORT hl.0195FC90
0195FC7D   83B8 DC000000 03 CMP DWORD PTR DS:[EAX+DC],3
0195FC84   75 0A            JNZ SHORT hl.0195FC90
0195FC86   C780 C4000000 00>MOV DWORD PTR DS:[EAX+C4],3F800000
0195FC90   C3               RETN
0195FC91   90               NOP
0195FC92   90               NOP
0195FC93   90               NOP
0195FC94   90               NOP
0195FC95   90               NOP
0195FC96   90               NOP
0195FC97   90               NOP
0195FC98   90               NOP
0195FC99   90               NOP
0195FC9A   90               NOP
0195FC9B   90               NOP
0195FC9C   90               NOP
0195FC9D   90               NOP
0195FC9E   90               NOP
0195FC9F   90               NOP

/*
obtener direccion de hud_playermove, obtener direccion de pm_move que es el primer call,
luego obtener direccion de PM_PlayerMove que es el unico call dentro.
con PM_PlayerMove vamos a revisar el primer call y el anteultimo, que son
PM_CheckParamters y PM_CheckFalling respectivamente.
*/

void PM_DropPunchAngle ( vec3_t punchangle )
{
	float	len;
	
	len = VectorNormalize ( punchangle );
	len -= (10.0 + len * 0.5) * pmove->frametime;
	len = max( len, 0.0 );
	VectorScale ( punchangle, len, punchangle);
}

////////
void *v7; // eax@9
v10 = unk_1959CF0(v7);                        // VectorNormalize ( punchangle );
v9 = v10 - (0.5 * v10 + 10.0) * *((float *)off_1A2CBFC + 4);
UNDEF(v11);
v12 = v9 < 0.0;
v13 = 0;
v14 = v9 == 0.0;
if ( v11 & 0x4100 ) v9 = 0.0;
v15 = v9;
unk_1959D60(v8, LODWORD(v15), v8);
//////

float PM_CalcRoll (vec3_t angles, vec3_t velocity, float rollangle, float rollspeed )
{
    float   sign;
    float   side;
    float   value;
	vec3_t  forward, right, up;
    
	AngleVectors (angles, forward, right, up);
    
	side = DotProduct (velocity, right);
    
	sign = side < 0 ? -1 : 1;
    
	side = fabs(side);
    
	value = rollangle;
    
	if (side < rollspeed)
	{
		side = side * value / rollspeed;
	}
    else
	{
		side = value;
	}
  
	return side * sign;
}

////////////////////////////////////////////////////////////

void PM_CheckParamters( void )
{
	float spd;
	float maxspeed;
	vec3_t	v_angle;

        //...

        PM_DropPunchAngle( pmove->punchangle );//inicializa punchangles

	// Take angles from command.
	if ( !pmove->dead )
	{
		VectorCopy ( pmove->cmd.viewangles, v_angle );         
		VectorAdd( v_angle, pmove->punchangle, v_angle );////////parchear

		// Set up view angles.
		pmove->angles[ROLL]	=	PM_CalcRoll ( v_angle, pmove->velocity, pmove->movevars->rollangle, pmove->movevars->rollspeed )*4; ////////parchear
		pmove->angles[PITCH] =	v_angle[PITCH];
		pmove->angles[YAW]   =	v_angle[YAW];
	}
	else
	{
		VectorCopy( pmove->oldangles, pmove->angles );
	}

        //...
}

//////
{
    LODWORD(v32) = *((_DWORD *)off_1A2CBFC + 70935);
    LODWORD(v33) = *((_DWORD *)off_1A2CBFC + 70936);
    LODWORD(v34) = *((_DWORD *)off_1A2CBFC + 70937);
    v32 = v32 + *((float *)off_1A2CBFC + 40);
    v33 = v33 + *((float *)off_1A2CBFC + 41);
    v34 = v34 + *((float *)off_1A2CBFC + 42);
    v17 = *((_DWORD *)off_1A2CBFC + 81212);
    LODWORD(v30) = *(_DWORD *)(v17 + 104);
    LODWORD(v31) = *(_DWORD *)(v17 + 100);
    sub_1959520(&v32, &v39, &v35, &v38);
    v29 = -1;
    v16 = v37 * *((float *)off_1A2CBFC + 25) + v36 * *((float *)off_1A2CBFC + 24) + v35 * *((float *)off_1A2CBFC + 23);
    if ( v16 >= 0.0 )
      v29 = 1;
    v18 = v16;
    v19 = fabs(v18);
    if ( v19 >= v30 )
      v20 = v31;
    else                                        // side * sign; v29 y v20
      v20 = v19 / v30 * v31;                    // side * value / rollspeed
    *((float *)off_1A2CBFC + 19) = (long double)v29 * v20 * 4.0;// PM_CalcRoll ( v_angle, pmove->velocity, pmove->movevars->rollangle, pmove->movevars->rollspeed )*4;
    *((float *)off_1A2CBFC + 17) = v32;         // v_angle[PITCH];
    *((float *)off_1A2CBFC + 18) = v33;         // v_angle[YAW];
}

//////

////////////////////////////////////////////////////////////

void PM_CheckFalling( void )
{
       if ( pmove->onground != -1 &&
		 !pmove->dead &&
		 pmove->flFallVelocity >= PLAYER_FALL_PUNCH_THRESHHOLD )
	{
		float fvol = 0.5;

		if ( pmove->waterlevel > 0 )
		{
		}
		else if ( pmove->flFallVelocity > PLAYER_MAX_SAFE_FALL_SPEED )
		{
			pmove->PM_PlaySound( CHAN_VOICE, "player/pl_fallpain3.wav", 1, ATTN_NORM, 0, PITCH_NORM );
			fvol = 1.0;
		}
		else if ( pmove->flFallVelocity > PLAYER_MAX_SAFE_FALL_SPEED / 2 )
		{
			fvol = 0.85;
		}
		else if ( pmove->flFallVelocity < PLAYER_MIN_BOUNCE_SPEED )
		{
			fvol = 0;
		}

		if ( fvol > 0.0 )
		{
			// Play landing step right away
			pmove->flTimeStepSound = 0;
			
			PM_UpdateStepSound();
			
                        //-------------------------------

			// Knock the screen around a little bit, temporary effect
			pmove->punchangle[ 2 ] = pmove->flFallVelocity * 0.013;	// punch z axis

                        //-------------------------------

			if ( pmove->punchangle[ 0 ] > 8 )
			{
			     pmove->punchangle[ 0 ] = 8;
			}
		}
	}

        //...
}

////////////////////////////////////////////////////////////
=============
//PlayerMove
//Returns with origin, angles, and velocity modified in place.
//Numtouch and touchindex[] will be set if any of the physents
//were contacted during the move.
=============

void PM_PlayerMove ( qboolean server )
{
     // Adjust speeds etc.
     PM_CheckParamters(); //-----------> first call


     PM_CheckFalling(); //----------> ante-ultimo call

}


////////////////////////////////////////////////////////////
=============
This modume implements the shared player physics code between any particular game and 
the engine.  The same PM_Move routine is built into the game .dll and the client .dll and is
invoked by each side as appropriate.  There should be no distinction, internally, between server
and client.  This will ensure that prediction behaves appropriately.
=============

void PM_Move ( struct playermove_s *ppmove, int server )
{
   //...

   PM_PlayerMove( ( server != 0 ) ? true : false ); //unico call

   //...
}

////////////////////////////////////////////////////////////

//cdll_int.cpp
void DLLEXPORT HUD_PlayerMove( struct playermove_s *ppmove, int server )
{
	PM_Move( ppmove, server );
}

///////////////////////////////////////////////////////////////////////////

hl.exe:0195F0F3 call    sub_1959520
hl.exe:0195F0F8 fld     [esp+54h+var_1C]
hl.exe:0195F0FC fmul    dword ptr [esi+8]
hl.exe:0195F0FF fld     [esp+54h+var_20]
hl.exe:0195F103 fmul    dword ptr [esi+4]
hl.exe:0195F106 add     esp, 10h
hl.exe:0195F109 mov     [esp+44h+var_40], 0FFFFFFFFh
hl.exe:0195F111 faddp   st(1), st
hl.exe:0195F113 fld     [esp+44h+var_24]
hl.exe:0195F117 fmul    dword ptr [esi]
hl.exe:0195F119 faddp   st(1), st
hl.exe:0195F11B fst     [esp+44h+var_34]
hl.exe:0195F11F fcomp   flt_19BD1F4
hl.exe:0195F125 fnstsw  ax
hl.exe:0195F127 test    ah, 5
hl.exe:0195F12A jnp     short loc_195F134
hl.exe:0195F12C mov     [esp+44h+var_40], 1
hl.exe:0195F134
hl.exe:0195F134 loc_195F134:                            ; CODE XREF: sub_195EF00+22A.j
hl.exe:0195F134 fild    [esp+44h+var_40]
hl.exe:0195F138 fld     [esp+44h+var_34]
hl.exe:0195F13C fabs
hl.exe:0195F13E fcom    [esp+44h+var_3C]
hl.exe:0195F142 fnstsw  ax
hl.exe:0195F144 test    ah, 5
hl.exe:0195F147 jp      short loc_195F153
hl.exe:0195F149 fdiv    [esp+44h+var_3C]
hl.exe:0195F14D fmul    [esp+44h+var_38]
hl.exe:0195F151 jmp     short loc_195F159
hl.exe:0195F153 ; ---------------------------------------------------------------------------
hl.exe:0195F153
hl.exe:0195F153 loc_195F153:                            ; CODE XREF: sub_195EF00+247.j
hl.exe:0195F153 fstp    st
hl.exe:0195F155 fld     [esp+44h+var_38]
hl.exe:0195F159 //----------------------------------------------------------------------------->
hl.exe:0195F159 loc_195F159:                            ; CODE XREF: sub_195EF00+251.j
hl.exe:0195F159 fxch    st(1)
hl.exe:0195F15B fmul    st, st(1)  ///////////////v29 * v20 * 4.0
hl.exe:0195F15D mov     eax, off_1A2CBFC
hl.exe:0195F162 fmul    flt_19C7C60   /////////////////son dos multiplicaciones
hl.exe:0195F168 fstp    dword ptr [eax+4Ch] /////////////--> el ida salta hacia esta linea
hl.exe:0195F16B mov     ecx, off_1A2CBFC
hl.exe:0195F171 fstp    st
hl.exe:0195F173 fld     [esp+44h+var_30]
hl.exe:0195F177 fstp    dword ptr [ecx+44h]
hl.exe:0195F17A fld     [esp+44h+var_2C]
hl.exe:0195F17E mov     edx, off_1A2CBFC
hl.exe:0195F184 fstp    dword ptr [edx+48h]
hl.exe:0195F187 jmp     short loc_195F1A5 //seguir el jmp ------------------->
hl.exe:0195F189 ; ---------------------------------------------------------------------------
hl.exe:0195F189
hl.exe:0195F189 loc_195F189:                            ; CODE XREF: sub_195EF00+17A.j
hl.exe:0195F189 mov     ecx, [eax+50h]
hl.exe:0195F18C mov     [eax+44h], ecx
hl.exe:0195F18F mov     eax, off_1A2CBFC
hl.exe:0195F194 mov     edx, [eax+54h]
hl.exe:0195F197 mov     [eax+48h], edx
hl.exe:0195F19A mov     eax, off_1A2CBFC
hl.exe:0195F19F mov     ecx, [eax+58h]
hl.exe:0195F1A2 mov     [eax+4Ch], ecx
hl.exe:0195F1A5
hl.exe:0195F1A5 loc_195F1A5:                            ; CODE XREF: sub_195EF00+287.j  <---------------------//jmp
hl.exe:0195F1A5 mov     ecx, off_1A2CBFC

    sub_1959520(&v32, &v39, &v35, &v38);
    v29 = -1;
    v16 = v37 * *((float *)off_1A2CBFC + 25) + v36 * *((float *)off_1A2CBFC + 24) + v35 * *((float *)off_1A2CBFC + 23);
    if ( v16 >= 0.0 )
      v29 = 1;
    v18 = v16;
    v19 = fabs(v18);
    if ( v19 >= v30 )
      v20 = v31;
    else                                        // side * sign; v29 y v20
      v20 = v19 / v30 * v31;                    // side * value / rollspeed
    *((float *)off_1A2CBFC + 19) = (long double)v29 * v20 * 4.0;// PM_CalcRoll ( v_angle, pmove->velocity, pmove->movevars->rollangle, pmove->movevars->rollspeed )*4;
    *((float *)off_1A2CBFC + 17) = v32;         // v_angle[PITCH];
    *((float *)off_1A2CBFC + 18) = v33;         // v_angle[YAW];

0195F153   DDD8             FSTP ST
0195F155   D94424 0C        FLD DWORD PTR SS:[ESP+C]
0195F159   D9C9             FXCH ST(1)
0195F15B   D8C9             FMUL ST,ST(1)
0195F15D   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F162   D80D 607C9C01    FMUL DWORD PTR DS:[19C7C60] /////////////////////////////4.0
0195F168   D958 4C          FSTP DWORD PTR DS:[EAX+4C]
0195F16B   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F171   DDD8             FSTP ST
0195F173   D94424 14        FLD DWORD PTR SS:[ESP+14]
0195F177   D959 44          FSTP DWORD PTR DS:[ECX+44]
0195F17A   D94424 18        FLD DWORD PTR SS:[ESP+18]
0195F17E   8B15 FCCBA201    MOV EDX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F184   D95A 48          FSTP DWORD PTR DS:[EDX+48]
0195F187   EB 1C            JMP SHORT hl.0195F1A5
0195F189   8B48 50          MOV ECX,DWORD PTR DS:[EAX+50]
0195F18C   8948 44          MOV DWORD PTR DS:[EAX+44],ECX
0195F18F   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F194   8B50 54          MOV EDX,DWORD PTR DS:[EAX+54]
0195F197   8950 48          MOV DWORD PTR DS:[EAX+48],EDX
0195F19A   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F19F   8B48 58          MOV ECX,DWORD PTR DS:[EAX+58]
0195F1A2   8948 4C          MOV DWORD PTR DS:[EAX+4C],ECX
0195F1A5   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F1AB   5E               POP ESI

//void PM_CheckParamters( void )
int __cdecl sub_195EF00()
{
  void *v0; // ecx@1
  long double v1; // fst7@1
  __int16 v2; // fps@6
  char v3; // c0@6
  char v4; // c2@6
  char v5; // c3@6
  long double v6; // fst7@7
  void *v7; // eax@9
  int v8; // esi@11
  long double v9; // fst7@11
  long double v10; // fst7@11
  __int16 v11; // fps@11
  char v12; // c0@11
  char v13; // c2@11
  char v14; // c3@11
  float v15; // ST08_4@13
  long double v16; // fst7@14
  int v17; // ecx@14
  float v18; // ST20_4@16
  long double v19; // fst6@16
  long double v20; // fst6@17
  void *v21; // ecx@21
  int result; // eax@23
  __int16 v23; // fps@23
  long double v24; // fst7@23
  char v25; // c0@23
  char v26; // c2@23
  char v27; // c3@23
  float v28; // [sp+Ch] [bp-40h]@1
  signed int v29; // [sp+Ch] [bp-40h]@14
  float v30; // [sp+10h] [bp-3Ch]@14
  float v31; // [sp+14h] [bp-38h]@14
  float v32; // [sp+1Ch] [bp-30h]@14
  float v33; // [sp+20h] [bp-2Ch]@14
  float v34; // [sp+24h] [bp-28h]@14
  float v35; // [sp+28h] [bp-24h]@14
  float v36; // [sp+2Ch] [bp-20h]@14
  float v37; // [sp+30h] [bp-1Ch]@14
  char v38; // [sp+34h] [bp-18h]@14
  char v39; // [sp+40h] [bp-Ch]@14

  v0 = off_1A2CBFC;
  v28 = sqrt(*((float *)off_1A2CBFC + 70939) * *((float *)off_1A2CBFC + 70939)
           + *((float *)off_1A2CBFC + 70938) * *((float *)off_1A2CBFC + 70938) + *((float *)off_1A2CBFC + 70940)
                                                                               * *((float *)off_1A2CBFC + 70940));
  v1 = *((float *)off_1A2CBFC + 126);
  if ( v1 != 0.0 )
  {
    if ( v1 >= *((float *)off_1A2CBFC + 125) )
      v1 = *((float *)off_1A2CBFC + 125);
    *((float *)off_1A2CBFC + 125) = v1;
    v0 = off_1A2CBFC;
  }
  if ( v28 != 0.0 )
  {
    UNDEF(v2);
    v3 = v28 < (long double)*((float *)v0 + 125);
    v4 = 0;
    v5 = v28 == *((float *)v0 + 125);
    if ( !(v2 & 0x4100) )
    {
      v6 = *((float *)v0 + 125) / v28;
      *((float *)v0 + 70938) = v6 * *((float *)v0 + 70938);
      *((float *)off_1A2CBFC + 70939) = v6 * *((float *)off_1A2CBFC + 70939);
      *((float *)off_1A2CBFC + 70940) = v6 * *((float *)off_1A2CBFC + 70940);
      v0 = off_1A2CBFC;
    }
  }
  if ( *((_DWORD *)v0 + 46) & 0x1001000 || (v7 = (void *)*((_DWORD *)v0 + 52)) != 0 )
  {
    *((_DWORD *)v0 + 70938) = 0;
    v7 = off_1A2CBFC;
    *((_DWORD *)off_1A2CBFC + 70939) = 0;
    *((_DWORD *)off_1A2CBFC + 70940) = 0;
    v0 = off_1A2CBFC;
  }
  v8 = (int)((char *)v0 + 160);
  v10 = unk_1959CF0(v7);
  v9 = v10 - (0.5 * v10 + 10.0) * *((float *)off_1A2CBFC + 4);
  UNDEF(v11);
  v12 = v9 < 0.0;
  v13 = 0;
  v14 = v9 == 0.0;
  if ( v11 & 0x4100 )
    v9 = 0.0;
  v15 = v9;
  unk_1959D60(v8, LODWORD(v15), v8);//0195F065   E8 F6ACFFFF      CALL hl.01959D60

  if ( *((_DWORD *)off_1A2CBFC + 52) )//0195F078   85C9             TEST ECX,ECX
  {
    *((_DWORD *)off_1A2CBFC + 17) = *((_DWORD *)off_1A2CBFC + 20);
    *((_DWORD *)off_1A2CBFC + 18) = *((_DWORD *)off_1A2CBFC + 21);
    *((_DWORD *)off_1A2CBFC + 19) = *((_DWORD *)off_1A2CBFC + 22);
  }
  else
  {
    LODWORD(v32) = *((_DWORD *)off_1A2CBFC + 70935);
    LODWORD(v33) = *((_DWORD *)off_1A2CBFC + 70936);
    LODWORD(v34) = *((_DWORD *)off_1A2CBFC + 70937);
    v32 = v32 + *((float *)off_1A2CBFC + 40);
    v33 = v33 + *((float *)off_1A2CBFC + 41);
    v34 = v34 + *((float *)off_1A2CBFC + 42);
    v17 = *((_DWORD *)off_1A2CBFC + 81212);
    LODWORD(v30) = *(_DWORD *)(v17 + 104);
    LODWORD(v31) = *(_DWORD *)(v17 + 100);
    unk_1959520(&v32, &v39, &v35, &v38);
    v29 = -1;
    v16 = v37 * *((float *)off_1A2CBFC + 25) + v36 * *((float *)off_1A2CBFC + 24) + v35 * *((float *)off_1A2CBFC + 23);
    if ( v16 >= 0.0 )
      v29 = 1;
    v18 = v16;
    v19 = fabs(v18);
    if ( v19 >= v30 )
      v20 = v31;
    else
      v20 = v19 / v30 * v31;
    *((float *)off_1A2CBFC + 19) = (long double)v29 * v20 * 4.0;
    *((float *)off_1A2CBFC + 17) = v32;
    *((float *)off_1A2CBFC + 18) = v33;
  }
  v21 = off_1A2CBFC;
  if ( *((_DWORD *)off_1A2CBFC + 52) )
  {
    *((_DWORD *)off_1A2CBFC + 34) = -1056964608;
    v21 = off_1A2CBFC;
  }
  v24 = *((float *)v21 + 18);
  UNDEF(v23);
  v25 = v24 < 180.0;
  v26 = 0;
  v27 = v24 == 180.0;
  result = v23 & 0x4100;
  if ( !(v23 & 0x4100) )
    *((float *)v21 + 18) = *((float *)v21 + 18) - 360.0;
  return result;
}

0195F065   E8 F6ACFFFF      CALL hl.01959D60  ////////////////////////pm_punchangles
0195F06A   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F06F   83C4 0C          ADD ESP,0C
0195F072   8B88 D0000000    MOV ECX,DWORD PTR DS:[EAX+D0]
0195F078   85C9             TEST ECX,ECX
0195F07A   0F85 09010000    JNZ hl.0195F189
0195F080   8B88 5C540400    MOV ECX,DWORD PTR DS:[EAX+4545C]
0195F086   8D70 5C          LEA ESI,DWORD PTR DS:[EAX+5C]


0195F089   894C24 14        MOV DWORD PTR SS:[ESP+14],ECX ////////<--------------------- dentro de este if esta el vectoradd
0195F08D   8B90 60540400    MOV EDX,DWORD PTR DS:[EAX+45460]
0195F093   D94424 14        FLD DWORD PTR SS:[ESP+14]
0195F097   895424 18        MOV DWORD PTR SS:[ESP+18],EDX
0195F09B   8B88 64540400    MOV ECX,DWORD PTR DS:[EAX+45464]
0195F0A1   894C24 1C        MOV DWORD PTR SS:[ESP+1C],ECX
0195F0A5   D880 A0000000    FADD DWORD PTR DS:[EAX+A0]
0195F0AB   D95C24 14        FSTP DWORD PTR SS:[ESP+14]
0195F0AF   D94424 18        FLD DWORD PTR SS:[ESP+18]
0195F0B3   D880 A4000000    FADD DWORD PTR DS:[EAX+A4]
0195F0B9   D95C24 18        FSTP DWORD PTR SS:[ESP+18]
0195F0BD   D94424 1C        FLD DWORD PTR SS:[ESP+1C]
0195F0C1   D880 A8000000    FADD DWORD PTR DS:[EAX+A8]
0195F0C7   D95C24 1C        FSTP DWORD PTR SS:[ESP+1C]
0195F0CB   8B88 F0F40400    MOV ECX,DWORD PTR DS:[EAX+4F4F0]
0195F0D1   8D4424 20        LEA EAX,DWORD PTR SS:[ESP+20]
0195F0D5   8B51 68          MOV EDX,DWORD PTR DS:[ECX+68]
0195F0D8   8B49 64          MOV ECX,DWORD PTR DS:[ECX+64]
0195F0DB   895424 08        MOV DWORD PTR SS:[ESP+8],EDX
0195F0DF   8D5424 2C        LEA EDX,DWORD PTR SS:[ESP+2C]
0195F0E3   894C24 0C        MOV DWORD PTR SS:[ESP+C],ECX
0195F0E7   52               PUSH EDX
0195F0E8   8D4C24 3C        LEA ECX,DWORD PTR SS:[ESP+3C]
0195F0EC   50               PUSH EAX
0195F0ED   8D5424 1C        LEA EDX,DWORD PTR SS:[ESP+1C]
0195F0F1   51               PUSH ECX
0195F0F2   52               PUSH EDX
0195F0F3   E8 28A4FFFF      CALL hl.01959520 /////////////unk_1959520(&v32, &v39, &v35, &v38);

0195F0F8   D94424 38        FLD DWORD PTR SS:[ESP+38]
0195F0FC   D84E 08          FMUL DWORD PTR DS:[ESI+8]
0195F0FF   D94424 34        FLD DWORD PTR SS:[ESP+34]
0195F103   D84E 04          FMUL DWORD PTR DS:[ESI+4]
0195F106   83C4 10          ADD ESP,10
0195F109   C74424 04 FFFFFF>MOV DWORD PTR SS:[ESP+4],-1
0195F111   DEC1             FADDP ST(1),ST
0195F113   D94424 20        FLD DWORD PTR SS:[ESP+20]
0195F117   D80E             FMUL DWORD PTR DS:[ESI]
0195F119   DEC1             FADDP ST(1),ST
0195F11B   D95424 10        FST DWORD PTR SS:[ESP+10]
0195F11F   D81D F4D19B01    FCOMP DWORD PTR DS:[19BD1F4]
0195F125   DFE0             FSTSW AX
0195F127   F6C4 05          TEST AH,5
0195F12A   7B 08            JPO SHORT hl.0195F134
0195F12C   C74424 04 010000>MOV DWORD PTR SS:[ESP+4],1
0195F134   DB4424 04        FILD DWORD PTR SS:[ESP+4]
0195F138   D94424 10        FLD DWORD PTR SS:[ESP+10]
0195F13C   D9E1             FABS
0195F13E   D85424 08        FCOM DWORD PTR SS:[ESP+8]
0195F142   DFE0             FSTSW AX
0195F144   F6C4 05          TEST AH,5
0195F147   7A 0A            JPE SHORT hl.0195F153
0195F149   D87424 08        FDIV DWORD PTR SS:[ESP+8] ////////v20 = v19 / v30 * v31;
0195F14D   D84C24 0C        FMUL DWORD PTR SS:[ESP+C]
0195F151   EB 06            JMP SHORT hl.0195F159

0195F153   DDD8             FSTP ST
0195F155   D94424 0C        FLD DWORD PTR SS:[ESP+C]

0195F159   D9C9             FXCH ST(1)
0195F15B   D8C9             FMUL ST,ST(1)
0195F15D   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F162   D80D 607C9C01    FMUL DWORD PTR DS:[19C7C60]
0195F168   D958 4C          FSTP DWORD PTR DS:[EAX+4C]
0195F16B   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F171   DDD8             FSTP ST
0195F173   D94424 14        FLD DWORD PTR SS:[ESP+14]
0195F177   D959 44          FSTP DWORD PTR DS:[ECX+44]
0195F17A   D94424 18        FLD DWORD PTR SS:[ESP+18]
0195F17E   8B15 FCCBA201    MOV EDX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F184   D95A 48          FSTP DWORD PTR DS:[EDX+48]
0195F187   EB 1C            JMP SHORT hl.0195F1A5
0195F189   8B48 50          MOV ECX,DWORD PTR DS:[EAX+50]
0195F18C   8948 44          MOV DWORD PTR DS:[EAX+44],ECX
0195F18F   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F194   8B50 54          MOV EDX,DWORD PTR DS:[EAX+54]
0195F197   8950 48          MOV DWORD PTR DS:[EAX+48],EDX
0195F19A   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
0195F19F   8B48 58          MOV ECX,DWORD PTR DS:[EAX+58]
0195F1A2   8948 4C          MOV DWORD PTR DS:[EAX+4C],ECX
0195F1A5   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F1AB   5E               POP ESI
0195F1AC   8B81 D0000000    MOV EAX,DWORD PTR DS:[ECX+D0]
0195F1B2   85C0             TEST EAX,EAX
0195F1B4   74 10            JE SHORT hl.0195F1C6
0195F1B6   C781 88000000 00>MOV DWORD PTR DS:[ECX+88],C1000000
0195F1C0   8B0D FCCBA201    MOV ECX,DWORD PTR DS:[1A2CBFC]           ; hl.02D5FE20
0195F1C6   D941 48          FLD DWORD PTR DS:[ECX+48]
0195F1C9   D81D E8789C01    FCOMP DWORD PTR DS:[19C78E8]
0195F1CF   DFE0             FSTSW AX
0195F1D1   25 00410000      AND EAX,4100
0195F1D6   75 0C            JNZ SHORT hl.0195F1E4
0195F1D8   D941 48          FLD DWORD PTR DS:[ECX+48]
0195F1DB   D825 E4789C01    FSUB DWORD PTR DS:[19C78E4]
0195F1E1   D959 48          FSTP DWORD PTR DS:[ECX+48]
0195F1E4   83C4 40          ADD ESP,40
0195F1E7   C3               RETN


////////////////////////////////////////////////////////////////////

//void PM_CheckFalling( void )
void __cdecl sub_195EB70()
{
  void *v0; // ecx@1
  __int16 v1; // fps@3
  long double v2; // fst7@3
  char v3; // c0@3
  char v4; // c2@3
  char v5; // c3@3
  __int16 v6; // fps@5
  long double v7; // fst7@5
  char v8; // c0@5
  char v9; // c2@5
  char v10; // c3@5
  __int16 v11; // fps@7
  long double v12; // fst7@7
  char v13; // c0@7
  char v14; // c2@7
  char v15; // c3@7
  __int16 v16; // fps@11
  char v17; // c0@11
  char v18; // c2@11
  char v19; // c3@11
  signed int v20; // eax@13
  __int16 v21; // fps@21
  long double v22; // fst7@21
  char v23; // c0@21
  char v24; // c2@21
  char v25; // c3@21
  float v26; // [sp+0h] [bp-4h]@4

  v0 = off_1A2CBFC;
  if ( *((_DWORD *)off_1A2CBFC + 56) != -1 )
  {
    if ( !*((_DWORD *)off_1A2CBFC + 52) )
    {
      v2 = *((float *)off_1A2CBFC + 39);
      UNDEF(v1);
      v3 = v2 < 250.0;
      v4 = 0;
      v5 = v2 == 250.0;
      if ( !(v1 & 0x100) )
      {
        LODWORD(v26) = 1056964608;
        if ( *((_DWORD *)off_1A2CBFC + 57) <= 0 )
        {
          v7 = *((float *)off_1A2CBFC + 39);
          UNDEF(v6);
          v8 = v7 < 580.0;
          v9 = 0;
          v10 = v7 == 580.0;
          if ( v6 & 0x4100 )
          {
            v12 = *((float *)off_1A2CBFC + 39);
            UNDEF(v11);
            v13 = v12 < 290.0;
            v14 = 0;
            v15 = v12 == 290.0;
            if ( v11 & 0x4100 )
            {
              if ( *((float *)off_1A2CBFC + 39) < 350.0 )
                LODWORD(v26) = 0;
            }
            else
            {
              LODWORD(v26) = 1062836634;
            }
          }
          else
          {
            LODWORD(v26) = 1065353216;
          }
        }
        UNDEF(v16);
        v17 = v26 < 0.0;
        v18 = 0;
        v19 = v26 == 0.0;
        if ( !(v16 & 0x4100) )
        {
          unk_195AD80(v16 & 0x4100);
          switch ( *((_BYTE *)off_1A2CBFC + 496) )
          {
            case 77:
              v20 = 1;
              break;
            case 68:
              v20 = 2;
              break;
            case 86:
              v20 = 3;
              break;
            case 71:
              v20 = 4;
              break;
            case 84:
              v20 = 5;
              break;
            case 83:
              v20 = 6;
              break;
            case 78:
              v20 = 9;
              break;
            default:
              v20 = 0;
              break;
          }
          unk_195A5A0(v20, LODWORD(v26));
          *((_DWORD *)off_1A2CBFC + 37) = 300;

          *((float *)off_1A2CBFC + 42) = *((float *)off_1A2CBFC + 39) * 0.013; ////pmove->punchangle[ 2 ] = pmove->flFallVelocity * 0.013;	// punch z axis
          
		  //0195ECA5   A1 FCCBA201      MOV EAX,DWORD PTR DS:[1A2CBFC]
		  //0195ECAA   D980 9C000000    FLD DWORD PTR DS:[EAX+9C]///////
		  //0195ECB0   DC0D B8739C01    FMUL QWORD PTR DS:[19C73B8]/////
		  //0195ECB6   D998 A8000000    FSTP DWORD PTR DS:[EAX+A8]//////


		  //los primeros 4 son la linea de codigo de arriba
		  //01A2CBFC  20 FE D5 02 | BD 02 00 00  00 00 00 00 01 00 00 00 
          //01A2CC0C  00 00 00 00   00 00 00 00  00 00 00 00 00 00 00 00 

		  //195EB70
		  v0 = off_1A2CBFC;
          v22 = *((float *)off_1A2CBFC + 40);
          UNDEF(v21);

          v23 = v22 < 8.0;              ///if ( pmove->punchangle[ 0 ] > 8 )pmove->punchangle[ 0 ] = 8;
          v24 = 0;
          v25 = v22 == 8.0;
          if ( !(v21 & 0x4100) )
          {
            *((_DWORD *)off_1A2CBFC + 40) = 1090519040;
            v0 = off_1A2CBFC;
          }
        }
      }
    }
    if ( *((_DWORD *)v0 + 56) != -1 ) ///////////////if ( pmove->onground != -1 ) 
      *((_DWORD *)v0 + 39) = 0;
  }
}

////////////////////////////////////////////////////////////////////

//void PM_PlayerMove ( qboolean server )
int __cdecl sub_195F340(int server)
{
  int v1; // edi@1
  int result; // eax@3
  int v3; // eax@4
  void *v4; // eax@7
  void *v5; // ecx@13
  int v6; // eax@17
  signed int v7; // eax@22
  char *v8; // ecx@22
  float v9; // edx@22
  long double v10; // fst7@23
  long double v11; // fst6@23
  void *v12; // eax@26
  long double v13; // fst7@35
  int v14; // eax@39
  __int16 v15; // fps@39
  long double v16; // fst7@39
  char v17; // c0@39
  char v18; // c2@39
  char v19; // c3@39
  __int16 v20; // fps@41
  long double v21; // fst7@41
  char v22; // c0@41
  char v23; // c2@41
  char v24; // c3@41
  void *v25; // ecx@42
  int v26; // ecx@44
  signed int v27; // eax@47
  int v28; // eax@55
  int v29; // eax@60
  int v30; // eax@64
  void *v31; // ecx@67
  long double v32; // fst7@70
  int v33; // ecx@76
  int v34; // [sp-14h] [bp-30h]@81
  signed int v35; // [sp-10h] [bp-2Ch]@81
  signed int v36; // [sp-Ch] [bp-28h]@81
  int v37; // [sp-8h] [bp-24h]@81
  signed int v38; // [sp-4h] [bp-20h]@81
  float v39; // [sp+Ch] [bp-10h]@22
  char v40; // [sp+10h] [bp-Ch]@24
  float v41; // [sp+18h] [bp-4h]@24
  signed int v42; // [sp+20h] [bp+4h]@1
  float v43; // [sp+20h] [bp+4h]@22

  v1 = 0;
  *((_DWORD *)off_1A2CBFC + 1) = server;
  sub_195EF00();                                // PM_CheckParamters()
  *((_DWORD *)off_1A2CBFC + 70947) = 0;         // pmove->numtouch = 0;
  v42 = *((_BYTE *)off_1A2CBFC + 283738);
  *((float *)off_1A2CBFC + 4) = (long double)v42 * 0.001;// pmove->frametime = pmove->cmd.msec * 0.001;
  unk_195F1F0();
  unk_1959520((char *)off_1A2CBFC + 68, (char *)off_1A2CBFC + 20, (char *)off_1A2CBFC + 32, (char *)off_1A2CBFC + 44);
  if ( *((_DWORD *)off_1A2CBFC + 54) || *((_DWORD *)off_1A2CBFC + 127) > 0 )// if ( pmove->spectator || pmove->iuser1 > 0 )
  {
    unk_195CE70(off_1A2CBFC);
    return sub_195C8E0(v42);
  }
  v3 = *((_DWORD *)off_1A2CBFC + 55);
  if ( v3 != 8 )
  {
    if ( v3 )
    {
      result = unk_195CB00();
      if ( result )
        return result;
    }
  }
  ((void (*)(void))sub_195C8E0)();
  *((_DWORD *)off_1A2CBFC + 59) = *((_DWORD *)off_1A2CBFC + 57);
  v4 = off_1A2CBFC;
  if ( *((_DWORD *)off_1A2CBFC + 56) == -1 )
  {
    *((float *)off_1A2CBFC + 39) = -*((float *)off_1A2CBFC + 25);
    v4 = off_1A2CBFC;
  }
  dword_1A2CC04 = 0;
  if ( !*((_DWORD *)v4 + 52) )
  {
    if ( !(*((_DWORD *)v4 + 46) & 0x1000000) )
    {
      v1 = unk_195DA30();
      if ( v1 )
        dword_1A2CC04 = 1;
    }
  }
  unk_195AED0();
  unk_195D2D0();
  v5 = off_1A2CBFC;
  if ( !*((_DWORD *)off_1A2CBFC + 52) && !(*((_DWORD *)off_1A2CBFC + 46) & 0x1000000) )
  {
    if ( v1 )
    {
      unk_195D670(v1);
LABEL_20:
      v5 = off_1A2CBFC;
      goto LABEL_21;
    }
    v6 = *((_DWORD *)off_1A2CBFC + 55);
    if ( v6 != 3 && v6 != 8 )
    {
      *((_DWORD *)off_1A2CBFC + 55) = 3;
      goto LABEL_20;
    }
  }
LABEL_21:
  result = *((_DWORD *)v5 + 55);
  switch ( result )
  {
    case 8:
      LODWORD(v9) = *((_DWORD *)v5 + 70939);
      LODWORD(v39) = *((_DWORD *)v5 + 70938);
      v43 = v9;
      unk_1959CF0((char *)v5 + 20);
      unk_1959CF0((char *)off_1A2CBFC + 32);
      v7 = 0;
      v8 = (char *)off_1A2CBFC + 20;
      do
      {
        v10 = v43 * *((float *)v8 + 3);
        v11 = v39 * *(float *)v8;
        ++v7;
        v8 += 4;
        *(&v39 + v7) = v10 + v11;
      }
      while ( v7 < 3 );
      v41 = v41 + *((float *)off_1A2CBFC + 70940);
      unk_1959B60((char *)off_1A2CBFC + 56, *((_DWORD *)off_1A2CBFC + 4), &v40, (char *)off_1A2CBFC + 56);
      result = (int)off_1A2CBFC;
      *((_DWORD *)off_1A2CBFC + 23) = 0;
      *((_DWORD *)off_1A2CBFC + 24) = 0;
      *((_DWORD *)off_1A2CBFC + 25) = 0;
      return result;
    case 6:
    case 10:
      return sub_195DD80(result, 0);
    case 5:
      sub_195C720();
      v12 = off_1A2CBFC;
      if ( *((_BYTE *)off_1A2CBFC + 283766) & 2 )
      {
        if ( v1 )
          goto LABEL_31;
        unk_195E460();
      }
      else
      {
        *((_DWORD *)off_1A2CBFC + 50) &= 0xFFFFFFFDu;
      }
      v12 = off_1A2CBFC;
LABEL_31:
      *((float *)v12 + 23) = *((float *)v12 + 29) + *((float *)v12 + 23);
      *((float *)off_1A2CBFC + 24) = *((float *)off_1A2CBFC + 30) + *((float *)off_1A2CBFC + 24);
      *((float *)off_1A2CBFC + 25) = *((float *)off_1A2CBFC + 31) + *((float *)off_1A2CBFC + 25);
      off_195B4D0[0]();
      *((float *)off_1A2CBFC + 23) = *((float *)off_1A2CBFC + 23) - *((float *)off_1A2CBFC + 29);
      *((float *)off_1A2CBFC + 24) = *((float *)off_1A2CBFC + 24) - *((float *)off_1A2CBFC + 30);
      result = (int)off_1A2CBFC;
      *((float *)off_1A2CBFC + 25) = *((float *)off_1A2CBFC + 25) - *((float *)off_1A2CBFC + 31);
      return result;
    case 3:
      if ( *((_DWORD *)v5 + 57) <= 1 )
      {
        if ( *((float *)v5 + 51) == 0.0 )
        {
          if ( *((float *)v5 + 48) == 0.0 )
            v13 = 1.0;
          else
            v13 = *((float *)v5 + 48);
          *((float *)v5 + 25) = *((float *)v5 + 25) - v13 * **((float **)v5 + 81212) * *((float *)v5 + 4) * 0.5;
          *((float *)off_1A2CBFC + 25) = *((float *)off_1A2CBFC + 31) * *((float *)off_1A2CBFC + 4)
                                       + *((float *)off_1A2CBFC + 25);
          *((_DWORD *)off_1A2CBFC + 31) = 0;
          dword_195B250[0]();
          v5 = off_1A2CBFC;
        }
      }
      if ( *((float *)v5 + 51) != 0.0 )
      {
        v16 = *((float *)v5 + 51);
        UNDEF(v15);
        v17 = v16 < 10000.0;
        v18 = 0;
        v19 = v16 == 10000.0;
        v14 = v15 & 0x4100;
        if ( !(v15 & 0x4100) )
        {
          *((_DWORD *)v5 + 51) = 1176256512;
          v5 = off_1A2CBFC;
        }
        v21 = *((float *)v5 + 51);
        UNDEF(v20);
        v22 = v21 < 0.0;
        v23 = 0;
        v24 = v21 == 0.0;
        LOWORD(v14) = v20;
        if ( v21 != 0.0 )
        {
          *((float *)v5 + 51) = *((float *)v5 + 51) - (long double)*((_BYTE *)v5 + 283738);
          v25 = off_1A2CBFC;
          if ( *((float *)off_1A2CBFC + 51) < 0.0 || !*((_DWORD *)off_1A2CBFC + 57) )
          {
            *((_DWORD *)off_1A2CBFC + 51) = 0;
            v26 = *((_DWORD *)off_1A2CBFC + 46);
            BYTE1(v26) &= 0xF7u;
            *((_DWORD *)off_1A2CBFC + 46) = v26;
            v25 = off_1A2CBFC;
          }
          *((_DWORD *)v25 + 23) = *((_DWORD *)v25 + 26);
          v14 = (int)off_1A2CBFC;
          *((_DWORD *)off_1A2CBFC + 24) = *((_DWORD *)off_1A2CBFC + 27);
        }
        ((void (__fastcall *)(int))off_195B4D0[0])(v14);
        return sub_195C720();
      }
      v27 = *((_DWORD *)v5 + 57);
      if ( v27 >= 2 )
      {
        if ( v27 == 2 )
        {
          unk_195E900();
          v5 = off_1A2CBFC;
        }
        if ( *((float *)v5 + 25) < 0.0 )
        {
          if ( *((float *)v5 + 51) != 0.0 )
          {
            *((_DWORD *)v5 + 51) = 0;
            v5 = off_1A2CBFC;
          }
        }
        if ( *((_BYTE *)v5 + 283766) & 2 )
        {
          unk_195E460();
        }
        else
        {
          v28 = *((_DWORD *)v5 + 50);
          LOBYTE(v28) = v28 & 0xFD;
          *((_DWORD *)v5 + 50) = v28;
        }
        unk_195C2B0();
        *((float *)off_1A2CBFC + 23) = *((float *)off_1A2CBFC + 23) - *((float *)off_1A2CBFC + 29);
        *((float *)off_1A2CBFC + 24) = *((float *)off_1A2CBFC + 24) - *((float *)off_1A2CBFC + 30);
        *((float *)off_1A2CBFC + 25) = *((float *)off_1A2CBFC + 25) - *((float *)off_1A2CBFC + 31);
        ((void (*)(void))sub_195C8E0)();
        goto LABEL_76;
      }
      if ( *((_BYTE *)v5 + 283766) & 2 )
      {
        if ( v1 )
          goto LABEL_62;
        unk_195E460();
      }
      else
      {
        v29 = *((_DWORD *)v5 + 50);
        LOBYTE(v29) = v29 & 0xFD;
        *((_DWORD *)v5 + 50) = v29;
      }
      v5 = off_1A2CBFC;
LABEL_62:
      if ( *((_DWORD *)v5 + 56) != -1 )
      {
        *((_DWORD *)v5 + 25) = 0;
        unk_195C050();
      }
      v30 = dword_195B250[0]();
      if ( *((_DWORD *)off_1A2CBFC + 56) == -1 )
        unk_195C5C0(v30, off_1A2CBFC);
      else
        unk_195BA80(v30, off_1A2CBFC);
      ((void (*)(void))sub_195C8E0)();
      *((float *)off_1A2CBFC + 23) = *((float *)off_1A2CBFC + 23) - *((float *)off_1A2CBFC + 29);
      *((float *)off_1A2CBFC + 24) = *((float *)off_1A2CBFC + 24) - *((float *)off_1A2CBFC + 30);
      *((float *)off_1A2CBFC + 25) = *((float *)off_1A2CBFC + 25) - *((float *)off_1A2CBFC + 31);
      dword_195B250[0]();
      v31 = off_1A2CBFC;
      if ( *((_DWORD *)off_1A2CBFC + 57) <= 1 )
      {
        if ( *((float *)off_1A2CBFC + 51) == 0.0 )
        {
          if ( *((float *)off_1A2CBFC + 48) == 0.0 )
            v32 = 1.0;
          else
            v32 = *((float *)off_1A2CBFC + 48);
          *((float *)off_1A2CBFC + 25) = *((float *)off_1A2CBFC + 25)
                                       - **((float **)off_1A2CBFC + 81212) * *((float *)off_1A2CBFC + 4) * v32 * 0.5;
          dword_195B250[0]();
          v31 = off_1A2CBFC;
        }
      }
      if ( *((_DWORD *)v31 + 56) != -1 )
        *((_DWORD *)v31 + 25) = 0;
      unk_195EB70();                            // PM_CheckFalling();
LABEL_76:
      result = (int)off_1A2CBFC;
      v33 = *((_DWORD *)off_1A2CBFC + 59);
      if ( v33 )
        goto LABEL_79;
      if ( !*((_DWORD *)off_1A2CBFC + 57) )
      {
        if ( !v33 )
          return result;
LABEL_79:
        if ( *((_DWORD *)off_1A2CBFC + 57) )
          return result;
      }
      result = (*((int (__cdecl **)(_DWORD, _DWORD))off_1A2CBFC + 81250))(0, 3);
      switch ( result )
      {
        case 0:
          v38 = 100;
          v37 = 0;
          v36 = 1061997773;
          v35 = 1065353216;
          v34 = (int)"player/pl_wade1.wav";
          goto LABEL_82;
        case 1:
          result = (*((int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))off_1A2CBFC + 81261))(
                     4,
                     "player/pl_wade2.wav",
                     1065353216,
                     1061997773,
                     0,
                     100);
          break;
        case 2:
          result = (*((int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))off_1A2CBFC + 81261))(
                     4,
                     "player/pl_wade3.wav",
                     1065353216,
                     1061997773,
                     0,
                     100);
          break;
        case 3:
          v38 = 100;
          v37 = 0;
          v36 = 1061997773;
          v35 = 1065353216;
          v34 = (int)"player/pl_wade4.wav";
LABEL_82:
          result = (*((int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))off_1A2CBFC + 81261))(
                     4,
                     v34,
                     v35,
                     v36,
                     v37,
                     v38);
          break;
        default:
          return result;
      }
      return result;
    default:
      return (*((int (**)(const char *, ...))v5 + 81241))(
               "Bogus pmove player movetype %i on (%i) 0=cl 1=sv\n",
               result,
               *((_DWORD *)v5 + 1));
    case 0:
      return result;
  }
  return result;
}





















